草庐IT

iOS 比较 NSUInteger 和 NSInteger

全部标签

在类中具有自定义比较函数的 C++ 优先级队列

我正在尝试使用自定义比较函数创建优先级队列,作为类的数据成员。如果我将队列放在一个类中,代码将无法编译,但是如果它在main函数中,它可以正常工作:#include#includeusingnamespacestd;boolcmp(intx,inty){return(x>y);}classA{public:private:priority_queue,decltype(cmp)>pq(cmp);//Erroratpq(cmp):function"cmp"isnotatypename};intmain(){priority_queue,decltype(cmp)>pq(cmp);//no

c++ - 比较期间 C++ bool 值是否转换为整数?

在C++中使用比较运算符时,bool是否转换为int?我问的原因是出现了是否始终显式比较if语句中的true/false的问题。两个选项是:1)if(my_bool==true)doSomething();2)if(my_bool)doSomething();我们认为您通常应该避免显式比较(1),原因如下:intmyFunc(){return4;}if(myFunc()==true)doSomething();如果您需要使用仅返回非零值以指示“真”的C接口(interface),就会出现类似于上面的代码。myFunc()示例在C中会失败,因为myFunc返回4,true被宏化为1,并且

零附近的 C++ 浮点比较与 Gtest 失败

我们为我的一个单元测试苦苦挣扎了很长一段时间。在调查过程中,我们找到了根本原因,这似乎是float的比较(参见以下代码片段,我简化了计算但仍然失败)。TEST_F(MyFloatTest,thisOneDoesFail){constfloattoCompare=0.2f-1.0f+0.9f;EXPECT_FLOAT_EQ(toCompare,0.1f);}结果是:Actual:0.1Expected:toCompareWhichis:0.099999964虽然有一些数值数学背景,但我们仍然无法弄清楚为什么这个测试失败了,而使用std::numerical_limits::epsilon

c++ - 自定义比较器—— "<="会比 "<"节省交换吗?

假设我有一个自定义的多标准比较器,尽管多部分可能无关紧要。为简单起见,假设我们要对由3个表示坐标的double值组成的数组进行排序。我知道常用的比较运算符是“//ComparebasedonX,thenY,thenZboolPointComparer(constarray&a,constarray&b){if(a[0]b[0])returnfalse;if(a[1]b[1])returnfalse;returna[2] 最佳答案 您不能使用对于std::sort()和类似的标准算法,因为它不满足Compareconcept这需要st

c++ - std::stringstream 和 std::ios::binary

我想写入std::stringstream而不进行任何转换,比如行尾。我有以下代码:voiddecrypt(std::istream&input,std::ostream&output){while(input.good()){charc=input.get()c^=mask;output.put(c);if(output.bad()){throwstd::runtime_error("Outputtostreamfailed.");}}}下面的代码就像一个魅力:std::ifstreaminput("foo.enc",std::ios::binary);std::ofstreamou

c++ - 比较 std::function<>

是否有可能以某种方式比较两个std::tr1::function对象?如果我有一个function的集合怎么办?对象并想添加和删除事件处理程序?添加是微不足道的,但要找到要删除的那个似乎是不可能的。 最佳答案 简单来说,做不到。std::function(在它的所有迭代中,包括boost::function和std::tr1::function)不支持运算符==。 关于c++-比较std::function,我们在StackOverflow上找到一个类似的问题:

c++ - 通过 SSE4 包装器比较字符串

我需要在支持SSE4的机器上快速比较两个字符串。不写汇编插入怎么办?像longlongbitmask=strcmp(char*a,char*b)这样的包装器将是完美的。 最佳答案 您应该使用英特尔SSE内部函数,而不是使用内联汇编。对于字符串比较,您需要SSE4.2内在函数:文档在这里:http://software.intel.com/sites/products/documentation/doclib/stdxe/2013/composerxe/compiler/cpp-mac/GUID-6E9CFDF2-5DF6-42A4-

c++ - 在不使用流的情况下设置 double (ios_base::precision)

有没有办法不使用流来做到这一点?例如,像这样:doublea=6.352356663353535;doubleb=a.precision(5);代替:doublea=6.352356663353535;std::cout.precision(5);std::cout我是C++的新手,我很好奇。提前谢谢。 最佳答案 我已经根据@john、@Konrad和@KennyTM的建议修改了代码。我检查过它是否适用于负数。#include#includeusingnamespacestd;intmain(){doublea=6.35235666

c++ - 比较C++中的2个日期

我想知道C++中有没有比较简单和简短的日期比较函数。我的日期是char*类型,格式如下:DD\MM\YYYY谢谢。 最佳答案 解析通常在流上完成,而不是字符串,但您可以使用stringstream.std::istringstreamdate_s("04\\10\\1984");structtmdate_c;date_s>>std::get_time(&date_c,"%d\\%m\\%Y");std::time_tseconds=std::mktime(&date_c);现在您可以使用来比较秒数以确定哪个更早。请注意,std::g

c++ - C++11 是否引入了不区分大小写的字符串比较算法?

刚刚在GCC4.8上迁移到C++11,并且最好从boost::iequals迁移到STL。我搜索了互联网,但没有看到任何迹象表明std::iequals或新的std::basic_string方法在STL中原生支持这一点。如果这在C++11中不存在,那么自C++03以来解决此问题的方法是否发生了变化(即不同的解决方法?),或者这里仍然首选boost?提前致谢。` 最佳答案 不,C++11没有引入不区分大小写的字符串比较函数。您现在需要坚持使用Boost。希望这对您有所帮助! 关于c++-